// // # 是运算符 说明引入头文件 include 是标识符 <> 把头文件名括起来 stdio.h  是头文件名
// //别人写的代码 我们需要使用   包含下 <> ""
// //<> 包含标准库目录 只检索标准库目录
// //"" 优先检索标准款目录 没找到 采用路径的方式去检索
//
// #include <stdio.h> //standard input output 标准输入输出头文件
// #include <stdlib.h>
// #include <stdbool.h>
// #include <time.h>
// // #include <conio.h>
// //配置环境的方式
//
//
// // main 是标识符   main 函数 程序入口 int关键字 () 运算符  {} 运算符 printf 标识符
// //入口函数 整个程序的入口 一个项目只有一个入口
// //1.常量
// //日常生活使用固定的值
// //整形常量 1,2,3,4，5
// //实数型常量 长整形常量
// // 单精度 1.1f
// //双精度 1.1 代码中默认的小数默认是双精度
// //字符型常量
// // 字符边界符 ''  转义字符 通常用在打印的时候调整格式或者打印特殊的字符
// //  \\ \t \a \f \n \t \b \ddd
// // \012代表是一个字符
// // \0 == 0
// // 字符串常量
// // 字符串边界符 ""
// // ，每个字符串 有我们看不见的结束标记 \0
//
// //常量
// #define PI 3.1415
//
//
// //变量
// //2. 变量
// //定义变量的语法  类型 标识符;
// //标识符 就是名字
// //标识符取名的规则
// //见名之意
// //不能用关键字当做变量名
// //不能用数字开头
// //可以用字母数字下划线 不能用数字开头
// //比较出名的命名方式 驼峰命名法 大驼峰 小驼峰  匈牙利命名法 g_setPos 每个前缀带有不同的含义
//
// //c语言常用的类型
// //int 整形 float 单精度 double 双精度 char 字符  char* 字符串
// //在同一个大括号不能定义相同的名字 本质就是在同一个作用域下
// //必须先定义 在使用  并且要初始化  使用了没有赋初值的变量
// //结合修饰词衍生出来的类型
// //内存上 short long 可以修饰整形 特殊long long 类型
// //范围上 unsigned 无符号的 默认都是有符号的  可以修饰char类型  本质上在内存上不需要符号位
//
// //不同的数据类型占用的内存
//
// //常属性变量
//
// //字符串 数组存储
//
// //输入和输出
//
//
//
// //全局变量  不做初始化  默认初始化为0  局部变量不做初始化 没有值
// int g_num=1234;
//
//
// int main(void)
// {
//     // printf("Hello, World!\n");
//     //
//     // //getchar(); //等待输入一个字符  按下回车
//     // //getchar();
//     //
//     // //while(1); 死等 死循环 不建议使用
//     //
//     // //system("pause"); //暂停程序运行，等待用户输入任意键继续 需要包含头文件stdlib.h
//     // // system("pause");
//     //
//     // printf("您好\n");
//     //
//     // printf("我是%s,今年%d岁\n 我身高%f米 体重%g公斤\n", "小明", 18, 1.75, 60.5);
//     //
//     // // getchar();
//     //
//     // char m  = -9;
//     //
//     // unsigned char n = m;
//     //
//     // printf("%d\n", m);
//     //
//     // printf("%d\n", n);
//
//     //声明并定义一个变量
//     // int n;
//
//     // getchar();
//     //
//     // printf("请输入一个整数:");
//     // scanf("%d", &n);
//     // printf("您输入的整数是%d\n", n);
//
//     // n=666;
//
//     // char c ;
//     // printf("请输入一个字符:");
//     // scanf("%c", &c);
//     // printf("您输入的字符是%c\n", c);
//     //
//     //
//     // char* str="aaa";
//     // printf("%s\n", str);
//     //
//     // unsigned char ch;
//     // for (int  i = 0; i < 256; i++)
//     // {
//     //     ch = i;
//     //     printf("%d -  %c\n", ch, ch);
//     // }
//
//     // int  n;
//     // printf("请输入一个整数:");
//     // scanf("%d", &n);
//     // printf("您输入的整数是%d\n", n);
//
//     // int age;
//     // char sex;
//     // double score;
//     // printf("请输入你的年龄性别成绩:");
//     // scanf("%d %c %lf", &age, &sex, &score);
//     // printf("您的年龄是%d,性别是%c,成绩是%lf\n", age, sex, score);
//     //
//     // getchar();
//
//     //水仙花数
//     //十位 个位  百位的立方和是它本身
//     // int n;
//     // int ge, shi, bai;
//     // while(1)
//     // {
//     //     printf("请输入一个整数:");
//     //     scanf("%d", &n);
//     //     ge = n%10;
//     //     shi = n/10%10;
//     //     bai = n/100;
//     //
//     //     if (ge*ge*ge+shi*shi*shi+bai*bai*bai == n)
//     //     {
//     //         printf("%d是水仙花数\n", n);
//     //         break;
//     //     }
//     // }
//
//
//
//     // 1; //整形
//     // 1L;//长整形
//     // 'a';
//     // 1.1;
//     // 1.1f;
//     //
//     // char cNumber = 'A';
//     //
//     // short int shortNumber = 10;
//     // long int longNumber = 100L; //32位操作 系统 4字节  64 位操作系统 8字节
//     // long long int longLongNumber = 100LL; //8字节
//     //
//     // unsigned int uNumber = 10u;
//     //
//     //  const int c_number;
//     // int const d_number;
//     //
//     // //printf 把内容打印在控制台
//     // printf("abc\n");
//     //
//     // printf("我好帅\n");
//     //
//     // printf("1""2""3\n");
//     // printf("4""5""6\n");
//     // //转义字符
//     // printf("7\t""8\n");
//     // printf("\101\n");
//     //
//     // //c语言printf打印变量值是通过占位符 （格式控制字符）
//     // //int %d
//     // //float %f
//     // //double %lf
//     // // char %c
//     // // 字符串 %s
//     // //指针 %p
//     // //long %ld
//     //
//     // int inum = 1;
//     // float fNumber = 3.1415f;
//     // double dNumber = 3.1415;
//     // char cChar = 'A';
//     // printf("%c\n", cChar);
//     // printf("%d\n",inum);
//     // printf("%f\n",fNumber);
//     // printf("%lf\n",dNumber);
//     // printf("字符串%s\n","abc\n");
//     //
//     // //精度控制
//     // //%+a.bf
//     // //%-a.bf
//     // // + - 代表的是对齐方式 左对齐还是右对齐 默认是右对齐 - 左对齐
//     //  // a：输出数据的宽度 宽度不够补空格
//     // //b 小数位
//     // printf("%10.2lf%10.2lf%10.2lf\n",1.12345,1.56743,1.89884);
//     //
//     // //默认补位是空格补位
//     // printf("%10s\n","我怕");
//     // printf("%10s\n","我怕"); //用0补位
//     //
//     // printf("%04d.jpg\n",10);
//
//     //
//     // int nNum = 0;
//     //
//     // printf("Please enter a number:%o \n",&nNum);
//     // scanf("%d", &nNum);
//     // printf("You entered %d numbers\n", nNum);
//     //
//     // //输入多个数据
//     // float fNum=.0f;
//     // double dNum=.0;
//     //
//     // //如果%d,%f,%lf 如果一样的 输入的时候必须和这个格式一样 浮点数在输入的时候不存在精度控制  格式控制字符不要用转义字符
//     // scanf("%d%f%lf",&nNum,&fNum,&dNum);
//     //
//     // printf("nNum=%d, fNum=%.2f, dNum=%.2f\n",nNum,fNum,dNum);
//     //
//     // //因为每次都有换行符  所以需要清除掉
//     // //fflush(stdin);//这个被淘汰了
//     // //setbuf(stdin, NULL);//会影响文件操作
//     // // int key =  getchar();
//     // //清空缓冲区
//     // //!= 不等于
//     // while (getchar() != '\n'); //读取字符 直到读取到换行符结束
//     // //字符或者字符串 输入之前做了其他输入 会存在跳过现象
//     // char cNum =0;;
//     // scanf("%c",&cNum);
//     // printf("%c\n",cNum);
//     // printf("======================");
//
//
//     //scanf printf 错误情况
//     //错误代码1
//     // printf("缺少打印数据%d\n");
//     //
//     // //错误代码2
//     // printf("格式控制少于打印数据%d%d%d\n",1,2,3,4);
//     //
//     // //错误代码2 忘记取地址符 缺少取地址符 会让程序崩溃掉
//     // int iNum=0;
//     // // scanf("%d",&iNum);
//     //
//     // scanf("%d",&iNum);
//     // float fNum=.0f;
//     //
//     // scanf("%f",&fNum);
//     //
//     // printf("%d,%.2f\n",iNum,fNum);
//
//     //scanf_s()
//    //对于数字类的输入一样使用、
//    // int iNum = 0;
//    //  scanf_s("%d",&iNum);
//    //
//    //  printf("%d\n",iNum);
//    //
//    //  while (getchar() != '\n');
//    //  //和scanf输入区别在于字符和字符串 需要增加一个参数  表示尺寸 需要添加内存大小
//    //  char key = 0;
//    //  scanf_s("%c",&key,1);
//    //  printf("key = %c\n",key);
//    //  //字符和多个数据进行输入的额时候
//    //  float fNum = .0f;
//    //  printf("input numbers");
//    //  scanf_s("%d %c%f",&iNum,&key,1,&fNum);
//    //  printf("%.2f",fNum);
//
//     // int key = getchar(); //getchar  整个表达式代表输入的值  把输入的值给key
//     // printf("%c\n", key);
//     // putchar('\n');
//     // putchar(key);
//
//     // int key = _getch();
//     // printf("%c", key);
//
//
//     // +-*/
//
//
//
//     // int iNum = 888;
//     // printf("%d\n", iNum);
//
//     // + -
//     // * /
//     //乘法 *  不能省略
//     // int result = 0;
//     // int a = 1,b=2;
//     // result = a+b*a*b;
//     // printf("%d\n",result);
//     //
//     // //除法  除法会自动取整数 不会得到小数  如果需要得到小数 分子或分母时小数 会自动得到小数 除数不能为0
//     //
//     // result = a/b;
//     // printf("%d\n",result);
//     //
//     // //取余 对于任意的x 取a的余数 余数一定小于除数 [0,a-1]
//     // result = a%b;
//     // printf("%d\n",result);
//     //
//     // //正负号问题 余数的正负号 只和被取余数有关 取余 没有负负得正
//     // printf("%d\n",-1%-2);
//     //
//     // //小数没有被取余 不允许
//     //
//     //
//     // //条件与逻辑运算符
//     // //条件运算符代表的是一种关系  只有两个值  0（假） 1（真）
//     // //在c语言编程 非0值都表示为真
//     // //NULL \0 0 代表不成立
//     //
//     // //条件运算符  > < >= <= == !=  ==不要写成赋值语句（=）
//     //
//     // printf("%d\n",10>5);
//     // printf("%d\n",10<5);
//     //
//     // //条件描述不存在连续操作 1<=6<=3 是恒等式 在mac中报错
//     //  // printf("%d\n",1<=6<=3);
//     //
//     // //逻辑运算符  && || !
//     //
//     // printf("%d\n",!"我很帅");
//     // printf("%d\n",!1);
//     //
//     // printf("%d\n",2%2==0 || 3%3==0);
//
//     //逻辑与和逻辑或 都存在短路现象
//
//     //为什么没有括号 下面的表达式是错的
//     //1<=2 || a=888;
//     //因为<= 与|| 优先级是高于=
//     //先算 1<=2 || a算完是1
//     // 1是不能被888赋值的  忘记了优先级的顺序 多用()运算符
//
//
//
//
//     //位运算符
//     //1, 数据加密 解密
//     //2.算法优化
//
//     //~  ~位取反
//     //|  | 位或
//     //&  & 位与
//     //^  ^ 位异或
//     //<<  << 左移
//     //>>  >> 右移
//
//
//     //复合赋值运算符 += -= *= /= %= &= |= ^= <<= >>=
//     // int result = 0;
//     // result = 10;
//     // printf("%d\n",result);
//
//    //特殊运算符
//     //sizeof() 统计类型占用字节数  在编译期完成的
//     //返回的是size_t  无符号整型
//     // printf("%lu\n",sizeof(int));
//     // printf("%lu\n",sizeof(float));
//     // printf("%lu\n",sizeof(double));
//     // printf("%lu\n",sizeof(char));
//     // printf("%lu\n",sizeof(short));
//     // printf("%lu\n",sizeof(long));
//     // printf("%lu\n",sizeof(long long));
//     //
//     // int a = 10;
//     // int b = 20;
//     // printf("%lu\n",sizeof(a+b));
//     // printf("%lu\n",sizeof("helloworld"));
//     //
//     // int iNum = 0;
//     //
//     // //编译器完成的 赋值语句不会运行 iNum还是等于0
//     // int result = sizeof(iNum=8);
//     // printf("%d\n",result);
//     // printf("%d\n",iNum);
//     //
//     //
//     //
//     // //三目运算符
//     // // 1?2:3;
//     // //1 成立 表达式的值为2  1不成立 表达式的值为3
//     //
//     // printf("%d\n",1?2:3);
//     //
//     // // ++ --
//     // int num = 10;
//     // ++num;
//     // printf("%d\n",num);
//     //
//     //
//     // //逗号运算符 //只是最后一个值
//     // printf("%d\n",(1,2,3));
//     //
//     // int iNumber=3,iNumber2 = 4;
//     // printf("%d\n",iNumber);
//     // printf("%d\n",iNumber2);
//
//    //  //隐式转换
//    //  int iNum = 1.1111;
//    //  printf("%d\n",iNum);
//    //
//    //  //除法
//    //  printf("%.2f\n",1.1/3.3);
//    //
//    //  //ASCII转换
//    //  //字符和字符串之间的转换
//    //  // char  cNum = 65;
//    //  // int iNum = 'A';
//    //  // printf("%d\n",iNum);
//    //
//    // //强制类型转换
//    //
//    //  //转换 端的往长的转没问题
//    //
//    //  //函数参数存在类型转换 格式控制字符 一定要和数据类型一致
//    //  printf("%d\n",1/2);
//    //
//    //
//    //  //了解内容  共享内存
//    //
//    //
//    //  int result = 0;
//    //  int a = 1;
//    //  result = a++ + a++ + ++a + ++a +a++; //两个前置 a=3 3*5 1+2+4+5+5
//    //
//    //   printf("%d\n",result);
//
//     // int  a = 10;
//
//     //这种不会执行
//     // if (a=0)
//     // {
//     //     printf("a=0\n");
//     // }
//
//     //习惯操作 判断相等 习惯把常量写在左边
//
//
//     // int a,b;
//     // scanf("%d%d",&a,&b);
//     // if (a>=b)
//     // {
//     //     printf("a>b\n");
//     // }else
//     // {
//     //     printf("a<b\n");
//     // }
//
//     // if-else 语句
//     //  if ("帅")
//     //  {
//     //     printf("帅\n");
//     //  }else
//     //  {
//     //     printf("不帅\n");
//     //  }
//     //
//     //  // 判断一个数字式奇数还是偶数
//     //  int iNum = 123;
//     //  if (iNum%2==0)
//     //  {
//     //      printf("偶数\n");
//     //  }else
//     //  {
//     //      printf("奇数\n");
//     //  }
//     //
//     //
//     //  //if_else if 语句
//     //
//     //     // 判断成绩等级
//     // int score = 85;
//     // if (score >= 90) {
//     //     printf("优秀\n");
//     // } else if (score >= 80) {
//     //     printf("良好\n");
//     // } else if (score >= 70) {
//     //     printf("中等\n");
//     // } else if (score >= 60) {
//     //     printf("及格\n");
//     // } else {
//     //     printf("不及格\n");
//     // }
//     //
//     //
//     //
//
//   //嵌套问题
//  //代表的条件的细化操作  逐步分析
//
//  //判断一个数字能被2 3 4 整除
//  // int number = 0;
//  // printf("请输入一个数字\n");
//  // scanf("%d",&number);
//  // if  (number%2==0 && number%3==0 && number%4==0)
//  // {
//  //     printf("能被2 3 4 整除\n");
//  // }else
//  // {
//  //     printf("不能被2 3 4 整除\n");
//  // }
//     // switch 语句示例：判断年级
//
//
//  //switch 语句 原生态的switch 只做一次成功的比较  比较成功 后续从上往下执行
//  //case 只能放字符和整数 枚举 case和后面的一定要有空格
//  // int grade = 2;
//  // switch(grade) {
//  //     case 1:
//  //      printf("一年级\n");
//  //      break;
//  //     case 2:
//  //      printf("二年级\n");
//  //      break;
//  //     case 3:
//  //      printf("三年级\n");
//  //      break;
//  //     case 4:
//  //      printf("四年级\n");
//  //      break;
//  //     default:
//  //      printf("其他年级\n");
//  // }
//  //
//  // //题型  字符来做
//  // char key = 'A';
//  // switch(key)
//  // {
//  //    case 'A':
//  //     printf("优秀\n");
//  //     break;
//  //    case 'B':
//  //     printf("良好\n");
//  //     break;
//  //   default:
//  //    printf("其他\n");
//  //    break;
//  // }
//  //
//  // //switch语句的两种问题
//  // //1. 在switch的存在其他语句 swtitch语句不执行case 和default 之外任何语句
//  // int number = 0;
//  // switch (number)
//  // {
//  //  if (number==0)
//  //  {
//  //   printf("存在case 之外的语句\n");
//  //   case 0:{
//  //    printf("0\n");}
//  //  }
//  //  case 1:
//  //   {
//  //     printf("1\n");
//  //   }
//  //  default:
//  //  printf("其他\n");
//  // }
//  //
//  // //2.
//  // //不同的case  相同的处理 可以合在一起
//  //
//  // // case 不能写字符串和浮点数
//  //
//  // //错误情况 case 中定义变量会出问题 {} 来限定作用域
//  //
//  // //{}  作用域 变量的有限范围  变量的产生到变量的死亡这个时间段
//  //
//  // //局部变量： 同一个作用域不允许存在同名变量
//  //
//  // //全局变量 ：  作用域是整个程序 作用域嵌套 就近原则
//  //
//  // //全局变量和局部变量同名  局部变量优先
//  //
//  //
//  //
//  //
//  // //静态变量 static int sNum = 0; 在程序关掉之后才会死亡 在程序开始之前就已经存在了  初始化只执行一次
//  //
//  // static int sNum = 0;
//  //
//  // printf("%d\n",sNum);
//
//     //switch 语句的常用形态 做菜单交互 做按键交互
//
//     // while 死循环
//     // while(1)
//     // {
//     //  printf("hello world\n");
//     // }
//
//     // int count = 0;
//     // while (count<10)
//     // {
//     //     printf("hello world\n");
//     //     count++;
//     //     if (count==5)
//     //     {
//     //      break;
//     //     }
//     //     //break; //跳出循环
//     // }
//
//     // bool bnum = false;
//     // bnum = true;
//
//     //switch的两种形态
//      char c;
//      while (1)
//      {
//       printf("请输入一个字符\n");
//        while (getchar()!='\n');
//        scanf("%c",&c);
//        switch (c)
//        {
//         case 'a':
//          printf("a\n");
//          break;
//          case 'b':
//           printf("b\n");
//           break;
//          default:
//           printf("其他\n");
//           break;
//        }
//       if (c=='q')
//       {
//        break;
//       }
//      }
//
//
//
//
//     return 0;
// }
// //c语言的所有语句都要加上分号 是英文的 不要打成中文的
// //{} 大括号要开始结束对应
//
//
//
//
